package fr.auzaiphe.joueur.view;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JTable;
import javax.swing.ListSelectionModel;

import fr.auzaiphe.joueur.controller.JoueurController;

/**
 * Classe abstraite pour l'affichage d'informations lors d'un clic sur l'élément du tableau correspondant
 * @author Anthony REY
 * @author Raphael
 * @since 20/05/2012
 * @abstract
 */
public abstract class VisualisationTableau implements MouseListener
{
	protected JTable table;
	protected JoueurController controller;
	private ListSelectionModel lsm;
	private int selectedRow;

	public VisualisationTableau(JTable pTable, JoueurController pController)
	{
		super();
		this.table = pTable;
		this.controller = pController;
	}

	/**
	 * Recuperation de l'élément du tableau
	 */
	protected abstract void recuperation();

	@Override
	public void mouseClicked(MouseEvent pE)
	{
		JTable target = (JTable) pE.getSource();
		this.selectedRow = target.getSelectedRow();

		/*
    	 * Vérification de la ligne sélectionnée
    	 */
		if( this.selectedRow >= 0 )
		{
            this.recuperation();
            this.table.getSelectionModel().removeSelectionInterval(this.selectedRow, 0);
		}
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stubs

	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	/*
	 * Getters
	 */
	public JTable getTable() {
		return this.table;
	}

	public JoueurController getController() {
		return this.controller;
	}

	public ListSelectionModel getLsm() {
		return this.lsm;
	}

	public int getSelectedRow() {
		return this.selectedRow;
	}

}
